// 进行打包 monerepo
// 1获取打包文件
const fs = require('fs')
// 开启进程
const execa = require('execa')
console.log(execa);
const dirs = fs.readdirSync('packages').filter(p=>{
    // statSync读这个文件的状态， isDirectory判断是不是文件夹
    if(!fs.statSync(`packages/${p}`).isDirectory()) {
        return false
    }
    return true
})

// 2文件夹进行打包 并行打包
runParaller(dirs,build).then(() => {
    console.log('成功');
}).catch((err) => {
    console.log(err,'打包失败');
})
console.log(dirs);

async function build(target) {
    console.log(target,333);
    // execa开启多个进程
    await execa('rollup',['-c','--environment', `TARGET:${target}`],{stdio:'inherit'})// 子进程在父包输出

}


async function runParaller(dirs,itemfn) {
    //遍历
    let result = []
    for(let item of dirs) {
      result.push(itemfn(item))  
    }
    return Promise.all(result) // 存放打包的promise

}
